package com.LeetCode;

import java.util.ArrayList;
import java.util.List;

public class _76最小覆盖字符串
{
    public static void main(String[] args)
    {
        System.out.println(minWindow("bbaa", "aba"));
        System.out.println("A");
        System.out.println("B");
        System.out.println("76多了一个输出");
//        List<String> list1 = new ArrayList<>();
//        List<String> list2 = new ArrayList<>();
//        list1.add("A");
//        list1.add("B");
//        list1.add("C");
//        list1.add("D");
//        list2.add("C");
//        list2.add("A");
//        System.out.println(help(list1, list2));
    }

    public static String minWindow(String s, String t)
    {
        if (s.length() == 0 || t.length() == 0)
        {
            return "";
        }
        int index = Integer.MAX_VALUE;
        String result = "";
        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>();
        List<String> list3 = new ArrayList<>();
        List<String> list4 = new ArrayList<>();
        String f = "";
        for (int i = 0; i < s.length(); i++)
        {
            list1.add(s.substring(i, i + 1));
        }
        for (int i = 0; i < t.length(); i++)
        {
            list2.add(t.substring(i, i + 1));
        }
        for (int i = 0; i < list1.size(); i++)
        {
            for (int j = i; j < list1.size(); j++)
            {
                list3.add(list1.get(j));
                if (list3.size() >= list2.size())
                {
                    boolean flag = help(new ArrayList<>(list3), new ArrayList<>(list2));
                    if (flag)
                    {
                        if (index > list3.size())
                        {
                            index = list3.size();
                            list4 = new ArrayList<>(list3);
                            list3.clear();
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            list3.clear();
        }
        if (list4.size() != 0)
        {
            for (int i = 0; i < list4.size(); i++)
            {
                result += list4.get(i);
            }
        }
        return result;
    }

    public static boolean help(List<String> list1, List<String> list2)
    {
//        System.out.println("lsit1" + list1);
//        System.out.println("list2" + list2);
        int count = 0;
        for (int i = 0; i < list2.size(); i++)
        {
            for (int j = 0; j < list1.size(); j++)
            {
                if (list2.get(i).equals(list1.get(j)))
                {
                    ++count;
                    break;
                }
            }
            if (count == list2.size())
            {
                return true;
            }
        }
        return false;
    }
}
